#ifndef ARRAY_LIST_H
#define ARRAY_LIST_H


#include<sys/types.h>

#define INIT_CAP 10
#define INCREASE_FACTOR 2
struct queue;
typedef struct queue queue_t; 
typedef queue_t* queue;

struct queue{
    void** array;
    u_int32_t cap;
    u_int32_t head;
    u_int32_t rear;
    int (*is_empty)(queue this);
    int (*size)(queue this);
    int (*push)(queue this,void* data);
    void* (*pop)(queue this);
    void* (*top)(queue this);
    void (*clear)(queue this);
    void (*destroy)(struct queue* this);
};

extern queue create_queue();
#endif